home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE20 / CACHE / CalendarTest.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-02-06  |  5.2 KB  |  188 lines

  1. unit CalendarTest;
  2. {
  3.   Author : Neil McClements
  4.   Date   : January '97
  5.   C/right: (c) 1997 N. McClements
  6.   Purpose: Simple application to demonstrate cached components
  7.   Note   : The calendar.db file must be copied into the same directory as the
  8.            source code/exe.
  9.  
  10.            Cache files are as follows :
  11.            a) c:\test1.cfg    - step 1 combo box
  12.            b) c:\test2.cfg    - step 2 combo box
  13.            c) c:\Calendar.cfg - step 3 calendar demo
  14. }
  15.  
  16. interface
  17.  
  18. uses
  19.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  20.   StdCtrls, DBTables, DB, Grids, Calendar, CachedCalendar, CachedCombo,
  21.   ExtCtrls;
  22.  
  23. type
  24.   TCacheForm = class(TForm)
  25.     GroupBox2: TGroupBox;
  26.     ComboBox1: TComboBox;
  27.     btnSaveToStream: TButton;
  28.     btnClear: TButton;
  29.     btnLoadFromStream: TButton;
  30.     GroupBox3: TGroupBox;
  31.     btnClearCacheCombo: TButton;
  32.     CachedCombo1: TCachedCombo;
  33.     CheckBox2: TCheckBox;
  34.     btnLoadCacheCombo: TButton;
  35.     Button6: TButton;
  36.     Button7: TButton;
  37.     GroupBox4: TGroupBox;
  38.     GroupBox1: TGroupBox;
  39.     CachedCalendar1: TCachedCalendar;
  40.     Button2: TButton;
  41.     Button3: TButton;
  42.     Button4: TButton;
  43.     Button5: TButton;
  44.     Button1: TButton;
  45.     Database1: TDatabase;
  46.     Query1: TQuery;
  47.     DataSource1: TDataSource;
  48.     CheckBox1: TCheckBox;
  49.     pnlYear: TPanel;
  50.     pnlMonth: TPanel;
  51.     procedure Button1Click(Sender: TObject);
  52.     procedure CheckBox1Click(Sender: TObject);
  53.     procedure Button2Click(Sender: TObject);
  54.     procedure Button3Click(Sender: TObject);
  55.     procedure Button4Click(Sender: TObject);
  56.     procedure Button5Click(Sender: TObject);
  57.     procedure FormShow(Sender: TObject);
  58.     procedure btnSaveToStreamClick(Sender: TObject);
  59.     procedure btnClearClick(Sender: TObject);
  60.     procedure btnLoadFromStreamClick(Sender: TObject);
  61.     procedure btnClearCacheComboClick(Sender: TObject);
  62.     procedure btnLoadCacheComboClick(Sender: TObject);
  63.     procedure CheckBox2Click(Sender: TObject);
  64.     procedure Button6Click(Sender: TObject);
  65.     procedure Button7Click(Sender: TObject);
  66.   private
  67.     { Private declarations }
  68.   public
  69.     procedure RefreshLabels;
  70.   end;
  71.  
  72. var
  73.   CacheForm: TCacheForm;
  74.  
  75. implementation
  76.  
  77. {$R *.DFM}
  78.  
  79. procedure TCacheForm.Button1Click(Sender: TObject);
  80. begin
  81.   // Refill the calendar from the database (initially)
  82.   CachedCalendar1.Refresh;
  83. end;
  84.  
  85. procedure TCacheForm.CheckBox1Click(Sender: TObject);
  86. begin
  87.   // Allow the user to switch between cached/non-cached. Changing modes takes a
  88.   // split second.
  89.   CachedCalendar1.UseCache:=CheckBox1.Checked;
  90. end;
  91.  
  92. procedure TCacheForm.Button2Click(Sender: TObject);
  93. begin
  94.   // Move the calendar back one month
  95.   CachedCalendar1.month:=CachedCalendar1.month-1;
  96.   RefreshLabels;
  97. end;
  98.  
  99. procedure TCacheForm.Button3Click(Sender: TObject);
  100. begin
  101.   // Move the calendar back one year
  102.   CachedCalendar1.Year:=CachedCalendar1.Year-1;
  103.   RefreshLabels;
  104. end;
  105.  
  106. procedure TCacheForm.Button4Click(Sender: TObject);
  107. begin
  108.   // Move the calendar along one month
  109.   CachedCalendar1.Month:=CachedCalendar1.Month+1;
  110.   RefreshLabels;
  111. end;
  112.  
  113. procedure TCacheForm.Button5Click(Sender: TObject);
  114. begin
  115.    // Move the calendar along one year
  116.   CachedCalendar1.Year:=CachedCalendar1.Year+1;
  117.   RefreshLabels;
  118. end;
  119.  
  120. procedure TCacheForm.RefreshLabels;
  121. begin
  122. // Keep the display informative - this sort of functionality could even be written into
  123. // the TCachedcalendar component itself, for completeness.
  124.   pnlMonth.caption:=FormatdateTime('mmmm', encodedate(CachedCalendar1.year, CachedCalendar1.month, CachedCalendar1.day));
  125.   pnlYear.caption:=FormatdateTime('yyyy', encodedate(CachedCalendar1.year, CachedCalendar1.month, CachedCalendar1.day));
  126.   pnlMonth.alignment:=taCenter;
  127.   pnlYear.alignment:=taCenter;
  128. end;
  129.  
  130. procedure TCacheForm.FormShow(Sender: TObject);
  131. begin
  132.   RefreshLabels;
  133. end;
  134.  
  135. procedure TCacheForm.btnSaveToStreamClick(Sender: TObject);
  136. var
  137.    stream:tfilestream;
  138. begin
  139.      // Try caching the items to a file stream
  140.      stream:=TFileStream.create('c:\test.cfg', fmCreate or fmOpenWrite);
  141.      ComboBox1.items.savetostream(stream);
  142.      stream.free;
  143. end;
  144.  
  145. procedure TCacheForm.btnClearClick(Sender: TObject);
  146. begin
  147.    ComboBox1.clear;
  148. end;
  149.  
  150. procedure TCacheForm.btnLoadFromStreamClick(Sender: TObject);
  151. var
  152.   stream:tfilestream;
  153. begin
  154.      // Try retrieving the cached items from the stream
  155.      stream:=TFileStream.create('c:\test.cfg', fmOpenRead);
  156.      combobox1.items.loadfromstream(stream);
  157.      stream.free;
  158. end;
  159.  
  160. procedure TCacheForm.btnClearCacheComboClick(Sender: TObject);
  161. begin
  162.   CachedCombo1.clear;
  163. end;
  164.  
  165. procedure TCacheForm.btnLoadCacheComboClick(Sender: TObject);
  166. begin
  167.   CachedCombo1.Populate;
  168. end;
  169.  
  170. procedure TCacheForm.CheckBox2Click(Sender: TObject);
  171. begin
  172.   // Allow the user to switch between cached/non-cached. Changing modes takes a
  173.   // split second.
  174.   CachedCombo1.UseCache:=CheckBox2.Checked;
  175. end;
  176.  
  177. procedure TCacheForm.Button6Click(Sender: TObject);
  178. begin
  179.   CachedCombo1.WriteListToStream;
  180. end;
  181.                              
  182. procedure TCacheForm.Button7Click(Sender: TObject);
  183. begin
  184.   CachedCombo1.ReadListFromStream;
  185. end;
  186.  
  187. end.
  188.